Introduction

在这个项目中,我将分析的是白葡萄酒数据,数据来源于:
P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis. Modeling wine preferences by data mining from physicochemical properties. In Decision Support Systems, Elsevier, 47(4):547-553. ISSN: 0167-9236

##  [1] "X"                    "fixed.acidity"        "volatile.acidity"    
##  [4] "citric.acid"          "residual.sugar"       "chlorides"           
##  [7] "free.sulfur.dioxide"  "total.sulfur.dioxide" "density"             
## [10] "pH"                   "sulphates"            "alcohol"             
## [13] "quality"
## 'data.frame':    4898 obs. of  13 variables:
##  $ X                   : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ fixed.acidity       : num  7 6.3 8.1 7.2 7.2 8.1 6.2 7 6.3 8.1 ...
##  $ volatile.acidity    : num  0.27 0.3 0.28 0.23 0.23 0.28 0.32 0.27 0.3 0.22 ...
##  $ citric.acid         : num  0.36 0.34 0.4 0.32 0.32 0.4 0.16 0.36 0.34 0.43 ...
##  $ residual.sugar      : num  20.7 1.6 6.9 8.5 8.5 6.9 7 20.7 1.6 1.5 ...
##  $ chlorides           : num  0.045 0.049 0.05 0.058 0.058 0.05 0.045 0.045 0.049 0.044 ...
##  $ free.sulfur.dioxide : num  45 14 30 47 47 30 30 45 14 28 ...
##  $ total.sulfur.dioxide: num  170 132 97 186 186 97 136 170 132 129 ...
##  $ density             : num  1.001 0.994 0.995 0.996 0.996 ...
##  $ pH                  : num  3 3.3 3.26 3.19 3.19 3.26 3.18 3 3.3 3.22 ...
##  $ sulphates           : num  0.45 0.49 0.44 0.4 0.4 0.44 0.47 0.45 0.49 0.45 ...
##  $ alcohol             : num  8.8 9.5 10.1 9.9 9.9 10.1 9.6 8.8 9.5 11 ...
##  $ quality             : int  6 6 6 6 6 6 6 6 6 6 ...

读取csv文件并查看数据结构,可以看到这个数据集中包含4898种白葡萄酒的的数据,数据的第一列是葡萄酒的编号,最后一列是其品质的评分(0-10),其余11列分别记录了葡萄酒的一项理化因子。

在这个项目中,我将首先对数据集中的各个变量做单变量分析,探究白葡萄酒中各种理化因子的分布特征;然后挑选部分变量双变量分析,探寻变量之间的关系及与白葡萄酒品质相关的因素,并计算相关统计值;最后对于双变量分析中有趣的组合中,我会尝试在其中添加更多的变量,探寻多变量之间的关系。

单变量分析

品质(quality)

## 
##    3    4    5    6    7    8    9 
##   20  163 1457 2198  880  175    5
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.000   5.000   6.000   5.878   6.000   9.000

白葡萄酒的品质最低为3,最高为9,分布近似正态,中位数为6,平均数也近似为6。 因为品质为3和9的酒数量太少,不妨把3和4、8和9合并,把葡萄酒的品质分组为’terrible’,‘bad’,‘average’,‘good’,’excellent’五组并绘图,可以得到:

酸类(acidity)

数据集中给出了白葡萄酒中非挥发性酸(fixed.acidity),挥发性酸(volatile.acidity,主要是醋酸)和柠檬酸(citric.acid)的含量,把挥发性和非挥发性酸相加可以得到酸的总含量,分别绘制三种酸及酸总含量分布的条形图: 可以看出酒中这三种酸的含量都接近正态分布,但具体的含量差距很大,最多的是非挥发性酸,含量大约为\(5-9g/L\),挥发性酸的含量大约为\(0.1-0.5g/L\),柠檬酸的含量为\(0-0.6g/L\),酸的总含量大约为\(6-10g/L\)。 可以看到四幅图中都存在长尾,所以我决定通过设置坐标轴范围在图中排除含量最高1%的数据,可以得到:

残留糖分(residual.sugar)

绘制残留糖分分布的条形图(图中同样排除了最高1%的极值,下略),可以看出残留糖分越高的酒数量越少,大部分酒中的残留糖分比较低,分布的峰值出现在\((0.5 - 2g/L)\),但也有不少酒中残留糖分较高。

氯化物(chlorides)

酒中氯化物的含量都很低,约为\(0.02-0.06g/L\)

硫化物(sulphides)

数据集中有三项与硫化物有关,分别是游离二氧化硫(free sulfur dioxide,单位\(mg/L\))、总二氧化硫(total sulfur dioxide,单位\(mg/L\))和硫酸盐(sulphates,单位\(g/L\))。因为二氧化硫的单位与数据集中的其他数据都不统一,先变换其单位(除以1000),并计算硫化物的总含量,分别绘图可得:

硫化物的含量都呈现正态分布,从条形图上看起来非常相似。游离\(SO_2\)含量最少,只有\(0.01-0.07g/L\);总\(SO_2\)量也很低,大约为\(0.05-0.22g/L\);硫酸盐含量较高,大约\(0.2-0.7g/L\);硫化物总量为\(0.25-1g/L\)
如果进一步计算硫化物中\(SO_2\)的比例和\(SO_2\)中游离态的比例,可以得到:

白葡萄酒的酒硫化物中\(SO_2\)的比例约为\(0.1-0.4\),其中游离态\(SO_2\)一般小于\(0.4\)

密度(density)

从图中可以看出,大部分葡萄酒的密度都在\(0.99-1g/mL\)的区间内,少部分酒密度超过了1,即大于水的密度。

酸碱性(pH)

白葡萄酒的pH值是标准的正态分布,大部分酒的pH值在2.8-3.6之间,呈弱酸性。

酒精浓度(alcohol)

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    8.00    9.50   10.40   10.51   11.40   14.20

大部分白葡萄酒的酒精浓度在9%-13%之间,调用summary计算可知酒精浓度的均值与中位数都在10.5%附近。


双变量分析

相关系数矩阵

调用ggcorr函数绘制数据集的相关系数矩阵,图中呈现了数据集中各项数据之间的相关系数。
从图中来看,白葡萄酒的品质与酒精浓度相关系数较大,与其他因子都没有呈现明显的相关性。
葡萄酒的密度与硫化物含量、氯化物含量、残留糖分、非挥发性酸含量、酒精浓度等很多变量都呈现明显的相关性。
在这些变量中,我会选择自己感兴趣的组合做双变量分析。

品质 VS 酒精浓度

绘制白葡萄酒品质与酒精浓度的箱型图,整体看来,品质较好的酒酒精浓度的平均数和中位数都高于品质较差的酒。
异常出现在品质最差(‘terrible’)的一组酒中,它的平均值和中位数都比品质为’bad’的酒高。
同时,品质’bad’的酒中出现了很多酒精浓度较高的异常值。

品质 VS 酸类

四幅箱形图分别绘制了酒的品质与不挥发性酸、挥发性酸、柠檬酸和酸总量的关系,其中挥发性酸与酒品质的相关性最显著,可以明显看出品质越高的酒挥发性酸含量越低;从最后一幅图中可以看出质量越高的酒中酸的总浓度越低。其他两幅图的相关关系不明显,但可以看出’terrible’组拥有更高的非挥发性酸含量,以及更低的柠檬酸含量。

品质 VS 残留糖分

白葡萄酒品质与残留糖分没有呈现明显的相关关系,不过其中’terrible’组的残留糖分偏低。

品质 VS 氯化物含量

从箱形图中可以看出,品质越好的白葡萄酒含有的氯化物含量越低。

品质 VS 硫化物含量

分别绘制葡萄酒品质与游离\(SO_2\)、总\(SO_2\)、硫酸盐、总硫化物、硫化物中\(SO_2\)比例,\(SO_2\)中游离态的比例绘制箱形图,大部分图形中都看不出明显的相关关系,不过与游离态\(SO_2\)相关的两幅图中都可以看出,品质更好的白葡萄酒中游离态\(SO_2\)的含量和比例都更高。

酸的总含量 VS pH

绘制酒中酸的总含量与pH值的散点图,因为pH是通过取对数求出来的,在这里我把x轴也设置成对数坐标,果然得到了一条近似直线的拟合曲线。

密度 VS 酒精浓度

## 
##  Pearson's product-moment correlation
## 
## data:  wine$density and wine$alcohol
## t = -87.255, df = 4896, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.7908646 -0.7689315
## sample estimates:
##        cor 
## -0.7801376

酒的密度与酒精浓度呈现明显的负相关关系,相关系数达到了-0.78。

密度 VS 残留糖分

## 
##  Pearson's product-moment correlation
## 
## data:  wine$density and wine$residual.sugar
## t = 107.87, df = 4896, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8304732 0.8470698
## sample estimates:
##       cor 
## 0.8389665

葡萄酒的密度与酸的含量呈现明显的正相关,相关系数约为0.84。

游离态二氧化硫 VS 结合态二氧化硫

计算酒中结合态\(SO_2\)的含量(\(SO_2\)总量-游离态\(SO_2\)),绘制其与游离态\(SO_2\)含量的散点图;

## 
##  Pearson's product-moment correlation
## 
## data:  wine$free.sulfur.dioxide and wine$fixed.sulfur.dioxide
## t = 19.116, df = 4896, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.2372821 0.2894077
## sample estimates:
##       cor 
## 0.2635373

酒中游离态\(SO_2\)和结合态\(SO_2\)呈现正相关的趋势,但相关关系并不显著,相关系数为0.26。

挥发性酸 VS 非挥发性酸

酒中的挥发性酸和非挥发性酸含量之间没有明显的相关关系。

多变量分析

品质 VS 残留糖分 VS 酒精浓度

##  [1] "fixed.acidity"             "volatile.acidity"         
##  [3] "citric.acid"               "residual.sugar"           
##  [5] "chlorides"                 "free.sulfur.dioxide"      
##  [7] "total.sulfur.dioxide"      "density"                  
##  [9] "pH"                        "sulphates"                
## [11] "alcohol"                   "quality"                  
## [13] "quality_bucket"            "total.acidity"            
## [15] "sulphides"                 "ratio.sulfur.dioxide"     
## [17] "ratio.free.sulfur.dioxide" "fixed.sulfur.dioxide"

绘制酒精浓度和残留糖分的散点图,并用葡萄的酒品质着色,可以看出酒精浓度和残留糖分之间存在负相关关系。观察颜色会发现品质较高的酒都分布在图的右侧,说明酒的品质和酒精浓度存在正相关,这与前文的发现是一致的。

密度 VS 酒精浓度 VS 残留糖分

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.9871  0.9917  0.9937  0.9940  0.9961  1.0390

观察白葡萄酒密度的统计值,按是否小于0.99和是否大于1将其分为三个区间,分别是’light’,‘average’,‘heavy’。

同样绘制酒精浓度与残留糖分的散点图,改为对密度着色,可以看到较轻的葡萄酒都在右下端,即高酒精浓度、低残留糖分;较重的酒则在左上方,对应低酒精浓度和高残留糖分。

品质 VS 不同形态的二氧化硫

把前文中两种二氧化碳存在形式的散点图用葡萄酒品质着色,可以看出高品质的酒位于图片的左上部分,对应较高的游离态\(SO_2\)含量,和较低的\(SO_2\)含量。

Fianl Plot

Plot 1 与酒品质相关的因素

在前文的探索中我们已经对白葡萄酒的品质与各个因子做了双变量分析,发现与酒的品质明显相关的因素包括酒精浓度、挥发性酸含量、氯化物含量和游离态\(SO_2\)占态\(SO_2\)总量的比例等。画出酒的品质与这四个变量的箱形图,图中的蓝色虚线表示这个变量在所有样本中的平均值,从图中可以发现
酒精浓度:酒精浓度较高的酒一般品质较高,品质较好的酒其酒精浓度一般在11%以上,酒精浓度低于10%的酒一般品质较差;
挥发性酸:品质较好的酒一般具有较低的挥发性酸含量。从维基百科-葡萄酒中的酸页面中得知,白葡萄酒中的挥发性酸一般指醋酸,当醋酸浓度高时(高于0.3g/L)时葡萄酒的品质一般会显著下降;
氯化物:品质越好的酒,氯化物含量越低。氯化物含量低于0.04g/L的酒一般质量较好;
游离态\(SO_2\)所占的比例:品质越好的酒,游离态\(SO_2\)比例越高,比例低于0.2的酒往往质量很糟糕。

Plot 2 酒精浓度、残余糖分和酒的密度

绘制酒精浓度与残留糖分的散点图,并对密度着色,可以看到酒精浓度与酒中的残留糖分存在明显的负相关关系,在图中呈现为一条向下倾斜的线。出现负相关的原因是白葡萄酒的酿造其实就是把有机糖通过微生物无氧呼吸转化为酒精,所以如果酒精浓度低,残留的糖分必定就较多,反之亦然。
图中还揭示了酒的密度与酒精浓度和残留糖分的关系,不难看出当酒精浓度较高、残留糖分较少时酒的密度较低,反之酒精浓度低、残留糖分多时酒的密度较高;原因是酒精的浓度比水小,而有机糖类的密度比水大,所以很自然酒精增多会降低密度,糖类增多会增大酒的密度。其实除了有机糖外,酒中的各种酸、硫酸盐、氯酸盐等成分密度也大于水,所以它们的增加也会提升酒的密度,不过它们的含量较低且密度也没有糖大所以相关性不够显著。

Plot 3 酸的总含量与pH

因为pH值反映的本质是氢离子\(H^+\)浓度,利用公式\(pH=-lg([H^+])\)把pH重新转化为\(H^+\)浓度,绘制其与酒中酸质量浓度的散点图,可以看到呈现明显的正相关关系。
计算酸的质量浓度与\(H^+\)浓度的线性回归方程:

## 
## Calls:
## m1: lm(formula = I(total.acidity) ~ I(hydrion.ion), data = wine)
## 
## ================================
##   (Intercept)         6.045***  
##                      (0.035)    
##   I(hydrion.ion)   1585.011***  
##                     (47.808)    
## --------------------------------
##   R-squared           0.183     
##   adj. R-squared      0.183     
##   sigma               0.766     
##   F                1099.163     
##   p                   0.000     
##   Log-likelihood  -5643.540     
##   Deviance         2873.056     
##   AIC             11293.080     
##   BIC             11312.570     
##   N                4898         
## ================================

得到了回归方程: \(total.acidity = 1585.011*[H^+] + 6.045\)
事实上这个写法很不严谨,因为等式两边的单位并不统一,酸的浓度用的是质量浓度,而\(H^+\)用的是摩尔浓度。将质量浓度除以酒中酸的平均摩尔质量可以得到摩尔浓度。葡萄酒中的酸虽然种类很多,但主要以酒石酸为主,因此这里为了简化计算,我假设酒中的酸全部都是酒石酸,其摩尔质量是\(150.087 g/mol\),两侧相除得到新的回归方程:
\(total.acidity = 10.56*[H^+] + 0.04\)
此处关注的是斜率,所以忽略截距项,所以方程进一步简化为:酒中酸的浓度 = 10.56*氢离子的浓度 因为酒石酸是弱酸,在水中不能完全解离,所以酒中酸的浓度比氢离子的浓度高,并且可以进一步计算出酒中酸的平均解离度为1/(10.56+1) = 0.087,即有8.7%的酸在水中解离出了氢离子\(H^+\)

Reflction

在这个项目中,我探索了关于白葡萄酒品质的数据集,发现其中有几个变量的值与葡萄酒品质密切相关,但大部分变量与品质之间没有呈现明显的相关性。我还探索了与葡萄酒密度有关的因素,并通过数据集中酸的含量与pH的数据简单计算了酒中酸的电离度。
但应该说现在我对这个数据集的探索还处在很初步的阶段,我最多只研究了三个变量之间的关系,没有对更多变量进行探索;我只对酒的品质与单个变量做个定性的分析,没有考虑多个因素的共同作用,也没有建立定量的模型;最后对酸电离度的计算也很简略,没有考虑不同酸的类型,也没有考虑多元酸的二级解离。如果对数据进行进一步更深度的探索,我会尝试建立一个白葡萄酒品质预测的模型。
另一个我比较感性的点是三个专家对不同酒的评价会有多大的差异,那种类型的酒容易引发差异化的评价,可惜原始数据集中没有提供这方面的数据。